Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Розрахунково-графічна робота
з дисципліни «Основи автоматизованого проектування складних об’єктів і систем»
на тему «Шаблони проектування»
Львів-2013
Зміст
Що таке шаблони проектування?
Породжуючі шаблони
Структурні шаблони
Шаблони поведінки
Вступ
Сьогодні, більшість компаній, які займаються розробкою програмних ужитків використовуючи шаблони проектування. Отже, цікавим питанням для дослідження постає питання, що являє собою шаблони проектування, як їх застосовувати та як ними оперувати.
На початку 1990-х років, коли об'єктно-орієнтовані технології тільки зароджувалися, всіх нас захопила ідея спадкування. Це ставлення обіцяло грандіозні перспективи. За допомогою спадкування можна було програмувати тільки відмінності!
Тобто маючи клас, який робить щось корисне, ми могли створити його підклас і змінити лише ті частини, які нас не влаштовували. Ми могли повторно використовувати код, просто успадкувавши його! Ми могли організовувати цілі ієрархії програмних конструкцій, в яких на кожному рівні використовувався код з попередніх рівнів. Нам відкрився прекрасний новий світ. Але, як більшість прекрасних нових світів, цей на перевірку теж виявився не цілком придатним до проживання. До 1995 року стало ясно, що спадкуванням дуже просто зловжити, а обходиться таке зловживання вкрай дорого. Гамма, Хелм, Джонсон і Вліссідес навіть визнали доречним підкреслити: «Віддавайте перевагу композиції об'єктів, а не спадкоємства класів». Тому ми стали рідше застосовувати спадкування, частенько замінюючи його композицією або делегуванням.
Перші шаблони проектування для мови програмування Smalltalk представили в 1987 р. Кент Бек і Вард Каннінгем. Але це було тільки початком, справжнє визнання в світі програмування вони отримали після публікації книги «Прийоми об'єктно-орієнтованого проектування. Шаблони проектування», написаної програмістами Е. Гамма, Р. Хелмом, Р. Джонсоном і Дж. Вліссідесом. У ній були представлені 23 шаблони, що стали зараз основними. Дана робота дала поштовх до вивчення шаблонів програмістами. Видання «банди чотирьох» (так жартома прозвали авторів книги) до цих пір залишається одним з ІТ-бестселерів, і його постійно публікують.
Втім, застосування шаблонів проектування пов'язане і з певними проблемами. Зокрема, поширена думка, що тільки фахівець, що володіє достатньо високою кваліфікацією і розуміючий, які з шаблонів йому потрібні, зуміє правильно використовувати їх у своїх програмах. Крім того, найчастіше деякі розробники, які вивчили лише кілька шаблонів проектування, починають вживати їх всюди, навіть там, де вони не дуже добре справляються із завданням і ускладнюють створюване ПЗ.
В даній розрахунковій роботі я розповім, що таке шаблони проектування дам зрозуміти їхню структуру, спробую вказати на їхні помилки та наведу декілька прикладів популярних шаблонів різного типу.
Що таке шаблони проектування?
Шаблони програмного забезпечення (software design patterns) — ефективні методи вирішення завдань проектування ПЗ. Шаблон не є кінцевим зразком, який можна відразу переводити в програмний код. Об'єктно-орієнтований шаблон часто є зразком розв’язання проблеми і показує відношення між об'єктами та класами, без вказівки на те, як буде зрештою виконане це відношення.
Типи шаблонів GOF бувають:
Шаблони поведінки
Твірні шаблони
Структурні шаблони
Породжуючі шаблони
Шаблони, що породжують (Creational patterns) — це шаблони, що абстрагують процес інстанціювання. Вони можуть зробити систему відмінною від способу створення, композиції та виявлення її об'єктів.
Шаблон, який створює класи, застосовує спадкування, щоб змінювати створюваний клас, а шаблон, що створює об'єкти, передає інстанціювання іншому об'єктові.
Ці шаблони є важливими, коли система більше залежить не від спадкування класів, а від композиції об'єктів.
Так, замість прямого кодування фіксованого набору поведінок, визначається невеликий набір основних поведінок, завдяки компози...